package com.seadragon.apps.doctorcard.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Type;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.DateSerializer;
import com.vividsolutions.jts.geom.Point;

@Entity
@Table(name = "contact")
@org.hibernate.annotations.DynamicUpdate(true)
public class Contact implements Serializable {

	private static final long serialVersionUID = 3615076497640118585L;

	public Contact(){}
	
	public Contact(long id){
		this.id = id;
	}
	
	@Id
	@Column(name = "ID")
	@GeneratedValue(strategy = GenerationType.AUTO)
	private long id;

	@Column(name = "UUID")
	private String uuid;

	@Column(name = "DOCTOR_CARD_ID")
	private String doctorCardId;

	@Column(name = "WHATS_UP")
	private String whatsUp;

	@Column(name = "GENDER")
	private String gender;

	@Column(name = "PROFILE_ICON_URL")
	private String profileIconUrl;

	@Column(name = "PROFILE_PHOTO_URL")
	private String profilePhotoUrl;

	@Column(name = "NAME")
	private String name;

	@Column(name = "PASSWORD")
	private String password;

	@Column(name = "MOBILE")
	private String mobile;

	@Column(name = "COMPANY_LOGO_URL")
	private String companyLogoUrl;

	@Column(name = "TELEPHONE")
	private String telephone;

	@Column(name = "JOB_TITLE")
	private String jobTitle;

	@Column(name = "DEPARTMENT")
	private String department;

	@Column(name = "COMPANY_ADDRESS")
	private String companyAddress;

	@Column(name = "COMPANY_NAME")
	private String companyName;

	@Column(name = "FACSIMILE")
	private String facsimile;

	@Column(name = "CITY")
	private String city;

	@Column(name = "STATE")
	private String state;

	@Column(name = "NATION")
	private String nation;

	@Column(name = "ENGLISH_NAME")
	private String englishName;

	@Column(name = "ENGLISH_JOB_TITLE")
	private String englishJobTitle;

	@Column(name = "ENGLISH_DEPARTMENT")
	private String englishDepartment;

	@Column(name = "ENGLISH_COMPANY_ADDRESS")
	private String englishCompanyAddress;

	@Column(name = "ENGLISH_COMPANY_NAME")
	private String englishCompanyName;

	@Column(name = "ENGLISH_CITY")
	private String englishCity;

	@Column(name = "ENGLISH_STATE")
	private String englishState;

	@Column(name = "ENGLISH_NATION")
	private String englishNation;

	@Column(name = "EMAIL")
	private String email;

	@Column(name = "COMPANY_ZIP")
	private String companyZip;

	@Column(name = "WEB_SITE")
	private String webSite;

	@Column(name = "LOCATION")
	@Type(type = "org.hibernate.spatial.GeometryType")
	private Point location;

	@JsonSerialize(using = DateSerializer.class)
	@Column(name = "DATE_CREATED")
	private Date dateCreated;

	@JsonSerialize(using = DateSerializer.class)
	@Column(name = "DATE_UPDATED")
	private Date dateUpdated;

	@Column(name="token")
	private String token;
	
	@Column(name="TIME_EXPIRED")
	private Date timeExpired;
	
	@Transient
	private RequestStatus status;
	
	@Transient
	private String alias;
	
	@Transient
	private int numOfNewRequests;
	
	@Transient
	private String message;
	
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getUuid() {
		return uuid;
	}

	public void setUuid(String uuid) {
		this.uuid = uuid;
	}

	public String getDoctorCardId() {
		return doctorCardId;
	}

	public void setDoctorCardId(String doctorCardId) {
		this.doctorCardId = doctorCardId;
	}

	public String getProfileIconUrl() {
		return profileIconUrl;
	}

	public void setProfileIconUrl(String profileIconUrl) {
		this.profileIconUrl = profileIconUrl;
	}

	public String getProfilePhotoUrl() {
		return profilePhotoUrl;
	}

	public void setProfilePhotoUrl(String profilePhotoUrl) {
		this.profilePhotoUrl = profilePhotoUrl;
	}

	public String getCompanyLogoUrl() {
		return companyLogoUrl;
	}

	public void setCompanyLogoUrl(String companyLogoUrl) {
		this.companyLogoUrl = companyLogoUrl;
	}

	public String getWhatsUp() {
		return whatsUp;
	}

	public void setWhatsUp(String whatsUp) {
		this.whatsUp = whatsUp;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

	public String getNation() {
		return nation;
	}

	public void setNation(String nation) {
		this.nation = nation;
	}

	public String getMobile() {
		return mobile;
	}

	public void setMobile(String mobile) {
		this.mobile = mobile;
	}

	public String getTelephone() {
		return telephone;
	}

	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}

	public String getEnglishJobTitle() {
		return englishJobTitle;
	}

	public void setEnglishJobTitle(String englishJobTitle) {
		this.englishJobTitle = englishJobTitle;
	}

	public String getEnglishName() {
		return englishName;
	}

	public void setEnglishName(String englishName) {
		this.englishName = englishName;
	}

	public String getEnglishDepartment() {
		return englishDepartment;
	}

	public void setEnglishDepartment(String englishDepartment) {
		this.englishDepartment = englishDepartment;
	}

	public String getEnglishCompanyAddress() {
		return englishCompanyAddress;
	}

	public void setEnglishCompanyAddress(String englishCompanyAddress) {
		this.englishCompanyAddress = englishCompanyAddress;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getJobTitle() {
		return jobTitle;
	}

	public void setJobTitle(String jobTitle) {
		this.jobTitle = jobTitle;
	}

	public String getDepartment() {
		return department;
	}

	public void setDepartment(String department) {
		this.department = department;
	}

	public String getCompanyAddress() {
		return companyAddress;
	}

	public void setCompanyAddress(String companyAddress) {
		this.companyAddress = companyAddress;
	}

	public String getCompanyName() {
		return companyName;
	}

	public void setCompanyName(String companyName) {
		this.companyName = companyName;
	}

	public String getFacsimile() {
		return facsimile;
	}

	public void setFacsimile(String facsimile) {
		this.facsimile = facsimile;
	}

	public String getEnglishCity() {
		return englishCity;
	}

	public void setEnglishCity(String englishCity) {
		this.englishCity = englishCity;
	}

	public String getEnglishState() {
		return englishState;
	}

	public void setEnglishState(String englishState) {
		this.englishState = englishState;
	}

	public String getEnglishNation() {
		return englishNation;
	}

	public void setEnglishNation(String englishNation) {
		this.englishNation = englishNation;
	}

	public String getEnglishCompanyName() {
		return englishCompanyName;
	}

	public void setEnglishCompanyName(String englishCompanyName) {
		this.englishCompanyName = englishCompanyName;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getWebSite() {
		return webSite;
	}

	public void setWebSite(String webSite) {
		this.webSite = webSite;
	}

	public String getCompanyZip() {
		return companyZip;
	}

	public void setCompanyZip(String companyZip) {
		this.companyZip = companyZip;
	}

	public Point getLocation() {
		return location;
	}

	public void setLocation(Point location) {
		this.location = location;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Date getDateCreated() {
		return dateCreated;
	}

	public void setDateCreated(Date dateCreated) {
		this.dateCreated = dateCreated;
	}

	public Date getDateUpdated() {
		return dateUpdated;
	}

	public void setDateUpdated(Date dateUpdated) {
		this.dateUpdated = dateUpdated;
	}

	public int getNumOfNewRequests() {
		return numOfNewRequests;
	}

	public void setNumOfNewRequests(int numOfNewRequests) {
		this.numOfNewRequests = numOfNewRequests;
	}

	public String getToken() {
		return token;
	}

	public void setToken(String token) {
		this.token = token;
	}

	public Date getTimeExpired() {
		return timeExpired;
	}

	public void setTimeExpired(Date timeExpired) {
		this.timeExpired = timeExpired;
	}

	public RequestStatus getStatus() {
		return status;
	}

	public void setStatus(RequestStatus status) {
		this.status = status;
	}

	public String getAlias() {
		return alias;
	}

	public void setAlias(String alias) {
		this.alias = alias;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}
